# 简单示例
# unittest示例
准备一些待测方法:
# mathfunc.py def add(a, b): return a+b def minus(a, b): return a-b def multi(a, b): return a*b def divide(a, b): return a/b为这些方法写一个测试:
# test_mathfunc.py # -*- coding: utf-8 -*- import unittest from mathfunc import * class TestMathFunc(unittest.TestCase): """Test mathfuc.py""" def test_add(self): """Test method add(a, b)""" self.assertEqual(3, add(1, 2)) self.assertNotEqual(3, add(2, 2)) def test_minus(self): """Test method minus(a, b)""" self.assertEqual(1, minus(3, 2)) def test_multi(self): """Test method multi(a, b)""" self.assertEqual(6, multi(2, 3)) def test_divide(self): """Test method divide(a, b)""" self.assertEqual(2, divide(6, 3)) self.assertEqual(2.5, divide(5, 2)) if __name__ == '__main__': unittest.main()查看执行结果
.F.. ====================================================================== FAIL: test_divide (__main__.TestMathFunc) Test method divide(a, b) ---------------------------------------------------------------------- Traceback (most recent call last): File "D:/py/test_mathfunc.py", line 26, in test_divide self.assertEqual(2.5, divide(5, 2)) AssertionError: 2.5 != 2 ---------------------------------------------------------------------- Ran 4 tests in 0.000s FAILED (failures=1)执行结果:能够看到一共运行了4个测试,失败了1个,并且给出了失败原因,
2.5 != 2也就是说我们的divide方法是有问题的。在第一行给出了每一个用例执行的结果的标识,成功是
.,失败是F,出错是E,跳过是S。从上面也可以看出,测试的执行跟方法的顺序没有关系,而是按照方法的ANCII顺序进行执行。每个测试方法均以
test开头,否则是不被unittest识别的。在unittest.main()中加
verbosity参数可以控制输出的错误报告的详细程度,默认是1,如果设为0,则不输出每一用例的执行结果,即没有上面的结果中的第1行;如果设为2,则输出详细的执行结果(每一个用例的详细执行情况以及用例名以及用例描述),如下:test_add (__main__.TestMathFunc) Test method add(a, b) ... ok test_divide (__main__.TestMathFunc) Test method divide(a, b) ... FAIL test_minus (__main__.TestMathFunc) Test method minus(a, b) ... ok test_multi (__main__.TestMathFunc) Test method multi(a, b) ... ok ====================================================================== FAIL: test_divide (__main__.TestMathFunc) Test method divide(a, b) ---------------------------------------------------------------------- Traceback (most recent call last): File "D:/py/test_mathfunc.py", line 26, in test_divide self.assertEqual(2.5, divide(5, 2)) AssertionError: 2.5 != 2 ---------------------------------------------------------------------- Ran 4 tests in 0.002s FAILED (failures=1)
← 变化输出方向 组织TestSuite →